package com.bilibili.juc.syncup;

import org.openjdk.jol.info.ClassLayout;

import java.util.concurrent.TimeUnit;

/**
 * @author zuife
 * @description
 * 锁消除，这个锁对象并没有被共用扩散到其他线程使用，
 * 极端的说就是根本没有加这个锁对象的底层机器码，消除了锁的使用
 * @since 2024-05-14 21:18:15
 */
public class LockClearUpDemo {
    static Object objectlock =new Object();
    public void m1(){
        //锁消除，JIT编译器会无视它，synchronized(o),每次new出来的，不存在了，非正常的。
        Object o =new Object();
        synchronized (o){
            System.out.println("------锁消除demo"+"\t" + o.hashCode() + "\t" + objectlock.hashCode());
        }
    }
    public static void main(String[] args) {
        LockClearUpDemo lockClearUpDemo = new LockClearUpDemo();
        for (int i = 0; i < 10; i++){
            new Thread(() -> {
                lockClearUpDemo.m1();
            },String.valueOf(i)).start();
        }
    }
}
